/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.j2ee.compumake.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import src.j2ee.compumake.dominio.InformacionUsuario;
import src.j2ee.compumake.dominio.Zona;

/************************************************************************
 **                                                                    **
 ** Nombre: DAOInformacionUsuario.java                                 **
 ** Version: v1.0.0                                                    **
 ** Autor: amado.cante                                                 **
 ** Creado: 20/04/2013                                                 **
 ** Modificado:                                                        **
 ** Diagrama:                                                          **
 ** Caso de uso:                                                       **
 **                                                                    **
 ***********************************************************************/
public class DAOInformacionUsuario {
    private static final String TABLA_INFORMACION = "InformacionUsuario";
    private static final String NOMBRE = "nombre";
    private static final String APELLIDOS = "apellidos";
    private static final String CALLE="calle";
    private static final String NUMERO="numero";
    private static final String CRUZAMIENTOS="cruzamientos";
    private static final String ZONA_DOMICILIO="zonaDomicilio";
    private static final String ID_INFORMACION="idInformacionUsuario";
    private Connection conexion;
    private AccesoBaseDatos acceso = new AccesoBaseDatos();
    private DAOZonas daoZonas;

    public DAOInformacionUsuario(){
        this.conexion = this.acceso.abrirConexion();
        this.daoZonas = new DAOZonas();
    }
    public int registrarInformacion(InformacionUsuario informacion) {
        try{            
            String query = "INSERT INTO "+TABLA_INFORMACION+"("+NOMBRE+","
                    +APELLIDOS+","+CALLE+","+NUMERO+","+CRUZAMIENTOS+","+ZONA_DOMICILIO+") "
                    + "VALUES ('"+informacion.getNombre()+"','"+informacion.getApellidos()+"','"
                    + informacion.getCalle()+"','"+informacion.getNumero()+"','"
                    + informacion.getCruzamientos()+"','"+informacion.getZona().getId()+"')";
            PreparedStatement sentencia = conexion.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
            int afectados = sentencia.executeUpdate();
            if(afectados == 0){
                return -1;
            }else{
                ResultSet generado = sentencia.getGeneratedKeys();
                if(generado.next()){
                    int id = generado.getInt(1);
                    return id;
                }else{
                    return -1;
                }            
            }
        }       
        catch (SQLException ex) {
            Logger.getLogger(DAOInformacionUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }    
        return -1;
    }
    
    protected InformacionUsuario buscaInformacion(int idInformacion){
        try{
            Statement sentencia = this.acceso.crearSentenciaBD(conexion);
            String query = "SELECT * FROM "+TABLA_INFORMACION+" WHERE "+ID_INFORMACION+"='"+idInformacion+"';";
            ResultSet resultado = sentencia.executeQuery(query);
            if(resultado.first()){                
                String nombre = resultado.getString("nombre");
                String apellidos = resultado.getString("apellidos");
                String calle = resultado.getString("calle");
                String numero = resultado.getString("numero");
                String cruzamientos = resultado.getString("cruzamientos");
                int zona = resultado.getInt("zonaDomicilio");
                Zona zonaDomicilio = daoZonas.buscarZona(zona);
                InformacionUsuario informacion = new InformacionUsuario(nombre, apellidos, calle, numero, cruzamientos, zonaDomicilio);
                return informacion;
            }else{
                return null;
            }
        }catch (SQLException ex) {
            Logger.getLogger(DAOUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }   

    boolean actualizarInformacion(InformacionUsuario informacion) {
        try{
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String query = "UPDATE "+TABLA_INFORMACION+" SET "+NOMBRE+"='"+informacion.getNombre()
                    +"', "+APELLIDOS+"='"+informacion.getApellidos()+"', "+CALLE
                    +"='"+informacion.getCalle()+"', "+NUMERO+"='"+informacion.getNumero()
                    +"', "+CRUZAMIENTOS+"='"+informacion.getCruzamientos()+"', "
                    +ZONA_DOMICILIO+"='"+informacion.getZona().getId()+"' WHERE "+
                    ID_INFORMACION+"='"+informacion.getClaveInformacion()+"';";
            int afectados = sentencia.executeUpdate(query);
            if(afectados>0){
                return true;
            }else{
                return false;
            }
        }catch(SQLException ex){
            return false;
        }
    }
}
